#ifndef DEMODULATOR_H
#define DEMODULATOR_H

#include <QObject>

#include "../RScode/source/superheader.h"

class Demodulator : public QObject
{
  Q_OBJECT

  // !!!!!!!!!!! нужно оттестировать

private:
  qlonglong m_q;       // объем сигнального алфавита
  qreal     m_E;       // средняя энергия сигналов QAM
  qlonglong m_sqrtQ;
  qlonglong m_sqrtQDown;
  qlonglong m_m;       // число бит переносимых сигналом
  qreal     m_l;       // минимальное расстояние между сигнальными точками
  qreal     m_A;       // амплитуда сигналов QAM
  qreal     m_delta;   // минимальное расстояние между сигналами

  QVector<QPointF> signalSet; // сигнальное множество

public: // !!!!!!!!!!! временно для тестирования класса
  // сопоставить зашумленному сигналу реальный
  qlonglong match(QPointF si) const;
  // расстояние между входными точками
  qreal distance(QPointF point1, QPointF point2) const;

public:
  explicit Demodulator(qlonglong q, qreal energy, QObject *parent = 0);

  QVector<qlonglong> demodulation(const QVector<QPointF> r); // демодуляция
};

#endif // DEMODULATOR_H
